﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using CDStore3Tiers;

namespace CDStore3Tiers
{
	 public class XuLyChiTietDatHang
	{
		StoreCDDataContext db ;

	     public XuLyChiTietDatHang()
	     {
	         db = new StoreCDDataContext();
             db.Connection.ConnectionString = getConfig.getConnection();
	     }
		XuLyForm xl = new XuLyForm();
		 /// <summary>
		 /// Lấy mã đĩa được đặt hàng
		 /// </summary>
		 /// <param name="maso">Mã đĩa nhập vào để so sánh</param>
		 /// <returns>Trả về mã đĩa được tìm thấy bằng tiêu chí nhập vào</returns>
		public List<vw_CTDHNew> LayID(int maso)
		{
			List<vw_CTDHNew> lay = (from a in db.vw_CTDHNews
										 where a.MaDia == maso
										 select a).ToList<vw_CTDHNew>();
			return lay;
		}
		 /// <summary>
		 /// Kiểm tra đĩa đã có trong chi tiết đặt hàng hay chưa
		 /// </summary>
		 /// <param name="ma">mã đặt hàng</param>
		 /// <param name="val">mã đĩa đưa vào để kiểm tra</param>
		 /// <returns>trả về true nếu mã đĩa đã có trong chi tiết đặt hàng, false nếu không</returns>
		public bool Trung(string ma, string val)
		{
			if (db.ChiTietDatHangs.Where(c => c.MaDH.Equals(ma) && c.MaDia.Equals(val)).Count() > 0)
			{
				return true;
			}
			else
				return false;
		}		
		 /// <summary>
		 /// Tìm danh sách đĩa được đặt hàng theo tiêu chí nhập vào
		 /// </summary>
		 /// <param name="CTDH">danh sách đĩa đặt hàng</param>
		 /// <param name="val">Tiêu chí nhập vào để tìm kiếm</param>
		 /// <returns>Trả về danh sách đĩa nhạc đặt hàng được tìm theo tiêu chi nhập ở bước trên</returns>
		 public List<vw_CTDHNew> SearchCTDH(List<vw_CTDHNew> CTDH, string val)
		{
			val = val.ToLower();
			return CTDH.Where(c => c.MaDia.ToString().ToLower().Contains(val) ||
				c.TenDia.ToString().ToLower().Contains(val) ||
				c.TenLoai.ToString().ToLower().Contains(val) ||
				c.SoLuong.ToString().ToLower().Contains(val) ||
				c.DonGiaBan.ToString().ToLower().Contains(val)).ToList<vw_CTDHNew>();
		}
		 /// <summary>
		 /// Lấy danh sách đĩa đặt hàng
		 /// </summary>
		 /// <param name="madh">giá trị truyền vào để so sánh</param>
		 /// <returns>trả về danh sách đĩa đặt hàng</returns>
		 public List<vw_CTDHNew> DSCTDH(int madh)
		 {
			 List<vw_CTDHNew> listdiadh = new List<vw_CTDHNew>();

			 listdiadh = (from dh in db.vw_CTDHNews
					   where dh.MaDH == madh
						  select dh).ToList<vw_CTDHNew>();
			 return listdiadh;
		 }
		 /// <summary>
		 /// Tìm kiếm đĩa nhạc
		 /// </summary>
		 /// <param name="dianhac">list đĩa nhạc</param>
		 /// <param name="val">giá trị truyền vào để so sánh</param>
		 /// <returns>trả về đĩa nhạc tìm kiếm </returns>
		 public List<vw_DiaNew> SearchDia(List<vw_DiaNew> dianhac, string val)
		 {
			 val = val.ToLower();
			 return dianhac.Where(c => c.MaDia.ToString().ToLower().Contains(val) ||
				 c.TenDia.ToString().ToLower().Contains(val) || c.SoLuongDia.ToString().ToLower().Contains(val) ||
				 c.DonGiaBan.ToString().ToLower().Contains(val)).ToList<vw_DiaNew>();
		 }
		 /// <summary>
		 /// Lấy ra danh sách đĩa nhạc
		 /// </summary>
		 /// <returns>trả về danh sách đĩa nhạc</returns>
		 public List<vw_DiaNew> DSDiaNhac()
		 {
			 List<vw_DiaNew> listdianhac = new List<vw_DiaNew>();
			 listdianhac = (from dia in db.vw_DiaNews
							select dia).ToList<vw_DiaNew>();
			 return listdianhac;
		 }
		 /// <summary>
		 /// Lấy mã đĩa của đĩa nhạc 
		 /// </summary>
		 /// <param name="ma">giá trị được truyền vào</param>
		 /// <returns>trả về mã đĩa lấy từ bảng đĩa nhạc</returns>
		 public List<DiaNhac> LayMaDia(int ma)
		 {
			 
			 List<DiaNhac> dia = new List<DiaNhac>();
			 dia = (from d in db.DiaNhacs
					where d.MaDia == ma
					select d).ToList<DiaNhac>();

			 return dia;
		 }
		 /// <summary>
		 /// Lấy số lượng của đĩa nhạc
		 /// </summary>
		 /// <param name="a">mã đĩa lấy được</param>
		 /// <returns>trả về số lượng đĩa</returns>
		 public int soluongdia(int a)
		 {
			 int kq = 0;
			 List<DiaNhac> l = LayMaDia(a);
			 kq = ConvertType.ToInt(l[0].SoLuongDia);
			 return kq;
		 }
		 /// <summary>
		 /// Lấy số lượng trong đĩa nhạc
		 /// </summary>
		 /// <param name="MaDH">giá trị mã dặt hàng truyền vào để so sánh</param>
		 /// <param name="MaDia">giá trị mã đĩa truyền vào để so sánh</param>
		 /// <returns>Trả về số lượng đĩa có trong đĩa chi tiết đặt hàng</returns>
         public int sl(int MaDH, int MaDia)
         {
             var kq = (from a in db.ChiTietDatHangs
                       where (a.MaDia == MaDia) && (a.MaDH == MaDH)
                       select a.SoLuong).Single();
             return kq;
         }
		 /// <summary>
		 /// Lấy đơn giá của đĩa nhạc
		 /// </summary>
		 /// <param name="madia">giá trị mã đĩa được truyền vào để so sánh với csdl</param>
		 /// <returns>trả về đơn giá trong đĩa nhạc</returns>
		 public int LayDonGia( int madia)
		 {
			 var kq = Convert.ToInt32((from a in db.DiaNhacs
					   where (a.MaDia == madia)
					   select a.DonGiaBan).Single());
			 return kq;
					   
		 }
		 public int TinhTongTien(int madh)
		 {
			 var z = Convert.ToInt32((from a in db.vw_CTDH_SelectAll(madh)
					  select a.ThanhTien).Sum());
			 return z;
		 }
		 
	}
}
